CVaR ---- **Expected Shortfall (ES):** también llamado VaR Condicional (**CVaR – conditional VaR**), *tail conditional expectation, conditional loss o expected tail loss.* Indica la pérdida potencial más allá del VaR. El **Expected Shortfall** o CVaR es un promedio de la cola de las pérdidas (*tail loss*). Al igual que el VaR el CVaR es una función de dos parámetros: el horizonte de tiempo y el nivel de confianza. Importar datos. ~~~~~~~~~~~~~~~ .. code:: r datos = read.csv("Tres acciones.csv", sep = ";", header = T) .. code:: r head(datos) tail(datos) .. raw:: html
A data.frame: 6 × 4
FechaECOPFBCOLOMISA
<fct><int><int><int>
111/01/20081995168007000
214/01/20081960163806810
315/01/20081905158806890
416/01/20081860159806710
517/01/20081755159006590
618/01/20081725153406320
.. raw:: html
A data.frame: 6 × 4
FechaECOPFBCOLOMISA
<fct><int><int><int>
281122/07/201930304126019000
281223/07/201930154202019160
281324/07/201930004128019300
281425/07/201930004130019800
281526/07/201929804116019200
281629/07/201929804130018960
Matriz de precios. ~~~~~~~~~~~~~~~~~~ .. code:: r precios=datos[,-1] precios = ts(precios) Nombres de las acciones ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r nombres = colnames(precios) nombres .. raw:: html
  1. 'ECO'
  2. 'PFBCOLOM'
  3. 'ISA'
Matriz de rendimientos. ~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r rendimientos = diff(log(precios)) Cantidad de acciones ~~~~~~~~~~~~~~~~~~~~ .. code:: r acciones = ncol(precios) acciones .. raw:: html 3 Cantidad de rendimientos ~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r numero_rendimientos = nrow(rendimientos) numero_rendimientos .. raw:: html 2815 CVaR ~~~~ CVaR diario con un nivel de confianza del 95% ``NC = 0.95`` #### Proporciones de inversión. ``proporciones=c(0.25, 0.4, 0.35)`` ECO: 25% PFBCOLOM: 40% ISA: 35% .. code:: r NC = 0.95 proporciones = c(0.25, 0.4, 0.35) valor_portafolio = 100000000 valor_mercado_acciones = proporciones*valor_portafolio El CVaR es el promedio de los valores menores de la cola de la izquierda de la distribución empírica de los rendimientos. Con un nivel de confianza del 95%, el CVaR es el promedio del 5% de los rendimientos más bajos. Se tienen 2815 rendimientos por cada acción, el 5% de los rendimientos representa 140,75 rendimientos, se debe escoger el entero menor, es decir, el rendimiento 140 entre los rendimientos más bajos será el VaR en porcentaje y el CVaR en porcentaje será el promedio de estos 140 rendimientos. Con ``sort(rendimientos[,i], decreasing = T)`` se está ordenando de mayor a menor valor cada columna de la matriz rendimientos. ``nrow(rendimientos)*(1 - NC)`` calcula la cantidad de rendimientos que representa el 5% del total de los rendimientos y la función ``floor()`` aproxima al entero menor. En este caso se tiene el valor de 140. ``tail()`` extrae los valores de la parte inferior de cada columna. Dentro de la función ``tail()`` se indicó que extraiga los 140 rendimientos más bajos. De los valores que extrae, el VaR en porcentaje corresponde al primer valor y el CVaR en porcentaje es el promedio de los 140 rendimientos más bajos. Luego, al multiplicar por ``valor_mercado_acciones`` se obtiene el resultado en términos monetarios. El CVaR siempre es mayor que el VaR porque tiene en cuenta todos los valores de la cola y obtiene un promedio. .. code:: r CVaR = vector() for(i in 1:acciones){ CVaR[i] = abs(mean(tail(sort(rendimientos[,i], decreasing = T), floor(nrow(rendimientos)*(1 - NC))))*valor_mercado_acciones[i]) } CVaR .. raw:: html
  1. 1122434.60465592
  2. 1419147.26751319
  3. 1293658.09899953
Rendimientos del portafolio de inversión ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r rendimientos_portafolio = vector() for(i in 1:numero_rendimientos){ rendimientos_portafolio[i] = sum(rendimientos[i,]*proporciones) } CVaR portafolio de inversión ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r CVaR_portafolio = abs(mean(tail(sort(rendimientos_portafolio,decreasing = T), floor(nrow(rendimientos)*(1 - NC))))*valor_portafolio) CVaR_portafolio .. raw:: html 2841126.68189997